package com.example.zluserservice.client;

import com.example.zluserservice.dto.request.ResourceReqDTO;
import com.example.zluserservice.dto.response.MenuResDTO;
import com.example.zluserservice.dto.response.ResourceResDTO;
import com.example.zluserservice.dto.response.TreeResDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Author zhenliu（孙凌岳）
 * @Description 重构-拆分原来的权限客户端 权限服务-资源
 * @Date 2025/6/21 10:35
 * @Version 1.0
 */
@FeignClient(name = "zl-permission-service", path = "/permission/inner/resource", contextId = "resourceFeignClient")
public interface ResourceFeignClient {
    /**
     * 根据角色id获取角色对应资源
     * @param userId 用户id
     * @return
     */
    @GetMapping("/find-resource")
    List<ResourceResDTO> findResourceResDTOListByUserId(@RequestParam("userId") Long userId);

    /**
     * 根据userId获取菜单（顶部栏）资源
     * @param userId
     * @return
     */
    @GetMapping("/menus")
    List<MenuResDTO> menus(@RequestParam("userId") Long userId);

    /**
     * 根据userId获取按钮信息
     * @param userId
     * @return
     */
    @GetMapping("/buttons")
    List<MenuResDTO> buttons(@RequestParam("userId") Long userId);

    /**
     * 多条件查询资源列表
     * @param resourceReqDTO
     * @return
     */
    @PostMapping("/list")
    List<ResourceResDTO> findResourceList( ResourceReqDTO resourceReqDTO);

    /**
     * 获取树形结构资源
     * @param resourceReqDTO
     * @return
     */
    @PostMapping("/tree")
    TreeResDTO resourceTreeResDTO(@RequestBody ResourceReqDTO resourceReqDTO);

    /**
     * 修改资源
     * @param resourceReqDTO
     * @return
     */
    @PutMapping("/update")
    Boolean updateResource(@RequestBody ResourceReqDTO resourceReqDTO);

    /**
     * 删除资源
     * @param menuId
     * @return
     */
    @DeleteMapping("/{menuId}")
    Boolean deleteMenuById(@PathVariable("menuId") String menuId);
}
